package com.sojson.config.exception.impl;

import com.sojson.config.exception.GlobalExceptionHandlerInterface;
import com.sojson.util.StringUtil;

import lombok.extern.slf4j.Slf4j;

/**
 * 异常统一处理实现类
 * 
 * @author liu
 * @date 2021-04-14
 */
@Slf4j
public class GlobalExceptionHandlerOnlineImpl implements GlobalExceptionHandlerInterface {

    private static GlobalExceptionHandlerOnlineImpl globalExceptionHandlerOnlineImpl;

    private GlobalExceptionHandlerOnlineImpl() {}

    /**
     * 异常的统一处理
     * 
     * @param e
     * @return
     */
    @Override
    public Object defaultErrorHandler(Exception e) {
        log.error(e.getMessage(), e);
        return null;
    }

    /**
     * 判断一个对象是否是空(空对象)
     * 
     * @param obj
     * @return
     */
    private static boolean isBlankObject(Object obj) {
        return StringUtil.isBlankObject(obj);
    }

    public static GlobalExceptionHandlerOnlineImpl getInstances() {
        if (isBlankObject(globalExceptionHandlerOnlineImpl)) {
            globalExceptionHandlerOnlineImpl = new GlobalExceptionHandlerOnlineImpl();
        }
        return globalExceptionHandlerOnlineImpl;
    }

}